有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate版本属性在更改时调用自动更新?

当以编程方式检索实体并操作它们的某些属性时,将调用自动更新,hibernate on commit不会手动调用session.update()以递增my db生成的版本列。(甚至进行验证)
我对自己的高版本值和验证感到惊讶

休眠4.3.1

这些实体仍然附着到会话

伪代码:

Session session = sessinFactory.openSession();
Transaction tr = session.beginTransaction();

Entity entity = session.get(Entity.class, 1);

entity.setFoo("foo");

tr.commit();
session.close(); // here fake-update takes place

问题:

这是一个功能吗

我可以尝试分离要操纵的实例

还是这是一只虫子?对我来说,这更像是一个bug,因为我没有调用更新。但不是假的更新


共 (1) 个答案

  1. # 1 楼答案

    是的,这是一个功能。调用tr.commit()时,将刷新会话。将检查与会话关联的每个对象是否为“脏”(状态已更改)。无论是否调用显式保存,每个更改的对象都将持久化到数据库。此外,如果实体是脏的,Hibernate将在刷新期间自动增加version属性